#include "ThreadPool.hpp" //线程池
#include "Task.hpp"       //任务
#include "Log.hpp"        //日志
#include <iostream>
#include <string>
#include <memory> //智能指针

int main()
{
    // 获取单例的可能是多线程啊！！！
    // 程序已经加载
    LOG(DEBUG, "程序已经加载");
    sleep(3);
    ThreadPool<Task>::getInstance();
    sleep(2);

    ThreadPool<Task>::getInstance();
    sleep(2);

    ThreadPool<Task>::getInstance();
    sleep(2);

    ThreadPool<Task>::getInstance();
    sleep(2);

    ThreadPool<Task>::getInstance()->Wait();
    sleep(2);

    return 0;
}

// int main()
// {
//     srand(time(nullptr) ^ getpid() ^ pthread_self());
//     EnableScreen();                                                               // 开启日志显示器打印功能
//     std::unique_ptr<ThreadPool<Task>> tp = std::make_unique<ThreadPool<Task>>(5); // C++14语法支持,Makefile改一下
//     // std::unique_ptr<ThreadPool<int>> tp(new ThreadPool<int>());
//     tp->InitThreadPool();
//     tp->Start();
//     //开始入任务
//     int tasknum = 10;
//     while(tasknum)
//     {
//         //获取任务
//         int a = rand()%10 +1;
//         usleep(1234);
//         int b = rand()%5+1;
//         Task t(a, b);
//         LOG(INFO, "main thread push task: %s", t.DebugToString().c_str());  //入一个任务就打印一些日志信息，x+x=？啊
//         tp->Enqueue(t);
//         sleep(1);
//         tasknum--;
//     }

//     tp->Stop();
//     // tp->Enqueue()

//     tp->Wait();
//     return 0;
// }